//
//  ViewController.m
//  Game
//
//  Created by admin on 2018/9/9.
//  Copyright © 2018年 LC. All rights reserved.
//

#import "ViewController.h"
#import <WebKit/WebKit.h>
#import <WebKit/WKFoundation.h>
@import WebKit;
// 准备工作
#import <CoreLocation/CoreLocation.h>

@interface ViewController ()
<CLLocationManagerDelegate>

@property (strong, nonatomic) IBOutlet WKWebView *webView;
@property (strong, nonatomic)   CLLocationManager   *mgr;

@end
/*
 如果demo没有运行起来注意点:
 1. 请求授权需要 Info.plist 配置 -> 告诉用户你使用位置信息干什么,希望用户同意
 2. 位置管理器没有被强引用
 3. 重新启动模拟器
 */

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    NSURL *url = [NSURL URLWithString:@"http://www.087yx.com/login?returnUrl=http://www.087yx.com/play_game/gid/lc&gid=lc"];
    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
    [_webView loadRequest:urlRequest];
    NSLog(@"_webView = %@", _webView);
    // 1. 创建位置管理器 注意:对象持有
    self.mgr = [CLLocationManager new];
    
    // 2. 请求授权
    // Info.plist中的配置说明用户可以选择的配置
    
    // 使用期间授权 (应用程序只有前台才能获取位置信息数据)
    [self.mgr requestWhenInUseAuthorization];
    // 永久授权 NSLocationAlwaysUsageDescription
    // 应用程序进入后台也能不断的获取位置信息
    //    [self.mgr requestAlwaysAuthorization];
    
    // 尽量使用 用户使用期间授权 降低能耗
    
    // 3. 设置代理 -> 实现代理 -> 获取数据
    self.mgr.delegate = self;
    
    // 持续定位的目标 -> 在最优的情况下(尽量减小能耗)
    // 1> 设置距离筛选器,当位置发生变化在x米之外才回调代理方法
    //    self.mgr.distanceFilter = 5;
    // 2> 设置期望精准度
    // desired: 期望
    /*
     // 导航专用
     extern const CLLocationAccuracy kCLLocationAccuracyBestForNavigation __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0);
     // 最佳精准度
     extern const CLLocationAccuracy kCLLocationAccuracyBest;
     // 十米误差
     extern const CLLocationAccuracy kCLLocationAccuracyNearestTenMeters;
     // 百米误差
     extern const CLLocationAccuracy kCLLocationAccuracyHundredMeters;
     // 千米误差
     extern const CLLocationAccuracy kCLLocationAccuracyKilometer;
     // 三千米误差
     extern const CLLocationAccuracy kCLLocationAccuracyThreeKilometers;
     */
    self.mgr.desiredAccuracy = kCLLocationAccuracyThreeKilometers;
    
    // 在iOS9以后在使用用户期间授权也可以后台获取位置信息数据
    // a. 设置允许后台获取位置信息数据
    if([self.mgr respondsToSelector:@selector(setAllowsBackgroundLocationUpdates:)]) {
        self.mgr.allowsBackgroundLocationUpdates = YES;
    }
    // b. 需要配置后台运行模式
    
    
    
    
    // 4. 启动定位
    [self.mgr startUpdatingLocation];

}

#pragma mark - CLLocationManagerDelegate -
// 位置对象被更新回调
- (void)locationManager:(CLLocationManager *)manager
     didUpdateLocations:(NSArray<CLLocation *> *)locations {
    
    CLLocation *location = [locations lastObject];
    
    NSLog(@"经度:%f,纬度:%f",location.coordinate.longitude,location.coordinate.latitude);
    // 暂停定位
    //    [manager stopUpdatingLocation];
    
    /*
     coordinate: 坐标
     struct CLLocationCoordinate2D {
     CLLocationDegrees latitude;    // 纬度
     CLLocationDegrees longitude;   // 经度
     };
     @property(readonly, nonatomic) CLLocationCoordinate2D coordinate;
     
     altitude 区别 latitude
     
     // 海拔
     @property(readonly, nonatomic) CLLocationDistance altitude;
     
     // Accuracy 精准度
     // 水平精准度(经纬度的精准度)
     @property(readonly, nonatomic) CLLocationAccuracy horizontalAccuracy;
     
     // 垂直精准度(海拔精准度)
     @property(readonly, nonatomic) CLLocationAccuracy verticalAccuracy;
     
     // course 朝向 (0度 正北方向)
     @property(readonly, nonatomic) CLLocationDirection course __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_2_2) __TVOS_PROHIBITED;
     
     // 速度 m/s
     @property(readonly, nonatomic) CLLocationSpeed speed __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_2_2) __TVOS_PROHIBITED;
     
     // 获取位置信息的时间戳
     @property(readonly, nonatomic, copy) NSDate *timestamp;
     
     // 楼层
     @property(readonly, nonatomic, copy, nullable) CLFloor *floor __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_8_0);
     
     // 当前位置与目标位置之间距离
     - (CLLocationDistance)distanceFromLocation:(const CLLocation *)location __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_3_2);
     */
}

@end
